#pragma once

#include "qlib/core/vec2.h"

#include "qlib/core/export.h"

#include <memory>
namespace qlib {

class QLIB_API Polygon;

// 单元元素基类，规范接口
class QLIB_API CellElementBase {
 public:
  // virtual void scale(double sx, double sy, Vec2d center);
  // virtual void rotate(double angle, Vec2d center);
  // virtual void mirror(Vec2d p0, Vec2d p1);
  // virtual void translate(double dx, double dy);
  // virtual void transform(double magnification, bool x_reflection, double rotation, Vec2d translate);

  // 导出gds时，保存自定义属性到文件
  virtual void savePropertiesGDS();
  // 导入gds时，从文件加载此对象属性
  virtual void loadPropertiesGDS();

  virtual void savePropertiesOAS();
  virtual void loadPropertiesOAS();

  // virtual Vec2dArray bounding_box();

  // virtual std::vector<std::shared_ptr<Polygon>> getPolygons() const;
};

}  // namespace qlib